home *** CD-ROM | disk | FTP | other *** search
/ Delphi Informant Complete 1995 - 2000 / Delphi Informant Complete 1995 to 2000.iso / Delphi Informant Magazine Complete Works SOURCE CODE 1998.rar / 1998 / Nov / di9811gd / Example1 / Unit1.pas < prev   
Pascal/Delphi Source File  |  1997-11-02  |  3KB  |  114 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls;
  8.  
  9. type
  10.   TGetWordProc = procedure(sz, szResult: PChar); stdcall;
  11.  
  12.   TForm1 = class(TForm)
  13.     btnLoad: TButton;
  14.     btnUnload: TButton;
  15.     Edit1: TEdit;
  16.     Label1: TLabel;
  17.     btnGetFirstWord: TButton;
  18.     btnGetNextWord: TButton;
  19.     procedure FormCreate(Sender: TObject);
  20.     procedure FormDestroy(Sender: TObject);
  21.     procedure btnLoadClick(Sender: TObject);
  22.     procedure btnUnloadClick(Sender: TObject);
  23.     procedure btnGetFirstWordClick(Sender: TObject);
  24.     procedure btnGetNextWordClick(Sender: TObject);
  25.     procedure Edit1Change(Sender: TObject);
  26.   private
  27.     { Private declarations }
  28.   public
  29.     { Public declarations }
  30.     LibHandle: THandle;
  31.   end;
  32.  
  33. var
  34.   GetFirstWord: TGetWordProc;
  35.   GetNextWord: TGetWordProc;
  36.   Form1: TForm1;
  37.  
  38. implementation
  39.  
  40. {$R *.DFM}
  41.  
  42. procedure TForm1.FormCreate(Sender: TObject);
  43. begin
  44.   LibHandle := 0;
  45. end;
  46.  
  47. procedure TForm1.FormDestroy(Sender: TObject);
  48. begin
  49.   if LibHandle <> 0 then
  50.     FreeLibrary(LibHandle);
  51. end;
  52.  
  53. procedure TForm1.btnLoadClick(Sender: TObject);
  54. begin
  55.   if LibHandle = 0 then
  56.     LibHandle := LoadLibrary('Dll1.dll');
  57.   if (LibHandle = 0) then
  58.     raise Exception.Create('Unable to load library.')
  59.   else begin
  60.     Edit1.Enabled := True;
  61.     btnGetFirstWord.Enabled := True;
  62.     GetFirstWord := GetProcAddress(LibHandle, 'GetFirstWord');
  63.     GetNextWord := GetProcAddress(LibHandle, 'GetNextWord');
  64.   end;
  65. end;
  66.  
  67. procedure TForm1.btnUnloadClick(Sender: TObject);
  68. begin
  69.   try
  70.     FreeLibrary(LibHandle);
  71.     GetFirstWord := nil;
  72.     GetNextWord := nil;
  73.   finally
  74.     LibHandle := 0;
  75.     Edit1.Enabled := False;
  76.     btnGetFirstWord.Enabled := False;
  77.     btnGetNextWord.Enabled := False;
  78.   end;
  79. end;
  80.  
  81. procedure TForm1.btnGetFirstWordClick(Sender: TObject);
  82. var
  83.   szResult: PChar;
  84. begin
  85.   GetMem(szResult, Length(Edit1.Text) + 1);
  86.   try
  87.     GetFirstWord(PChar(Edit1.Text), szResult);
  88.     ShowMessage(String(szResult));
  89.     btnGetNextWord.Enabled := True;
  90.   finally
  91.     FreeMem(szResult, Length(Edit1.Text) + 1);
  92.   end;
  93. end;
  94.  
  95. procedure TForm1.btnGetNextWordClick(Sender: TObject);
  96. var
  97.   szResult: PChar;
  98. begin
  99.   GetMem(szResult, Length(Edit1.Text) + 1);
  100.   try
  101.     GetNextWord(PChar(Edit1.Text), szResult);
  102.     ShowMessage(String(szResult));
  103.   finally
  104.     FreeMem(szResult, Length(Edit1.Text) + 1);
  105.   end;
  106. end;
  107.  
  108. procedure TForm1.Edit1Change(Sender: TObject);
  109. begin
  110.   btnGetNextWord.Enabled := False;
  111. end;
  112.  
  113. end.
  114.